//parseAttrsString函数：将attrs字符串解析成一个个对象
//有点难度
//注意：不能直接使用split()方法进行分割。 如：class="aaa bbb ccc"

export default function parseAttrsString(str) {
  let res = []

  if (str.length > 0) {

    //是否在双引号中
    let isInQuote = false
    //起点
    let start = 0

    //遍历字符串，分割所有的键值对 k=v
    for (let i = 0; i < str.length; i++) {
      let char = str[i]

      if (char === '"') {
        isInQuote = !isInQuote
      } else if (char === ' ' && !isInQuote) {
        //遇到空格，而且不在双引号中，则取出 一个键值对
        //console.log(str.substring(start, i))

        if (!(/^\s+$/.test(str.substring(start, i)))) {
          res.push(str.substring(start, i).trim())
          start = i
        }

      }
    }

    //遍历结束，还剩一个k:v
    res.push(str.substring(start).trim())

    //console.log(res)
  }

  //以等号=来分割每一个k:v
  let arr = res.map(item => {
    let itemArr = item.split('=')
    return {
      'name': itemArr[0],
      'value': itemArr[1].substring(1, itemArr[1].length - 1).trim()
    }
  })

  return arr
}